/* 
 * Copyright 2013 Sébastien Mouquet.
 * 
 * This file is part of ECovoiturage.
 * 
 * ECovoiturage is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 * 
 * ECovoiturage is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with ECovoiturage. If not, see http://www.gnu.org/licenses/.
 */
package com.smouquet.ecovoiturage.core.service;

import com.smouquet.ecovoiturage.core.exception.MailException;
import java.util.List;

/**
 * Service pour l'envoir d'email.
 * 
 * @author sebastien.mouquet
 */
public interface MailService
{
    public static final String FROM_ADDRESS = "noreply@ecovoiturage.com";
    
    
    /**
     * Envoi un mail aux distinataires dont les adresses sont fournies.
     * 
     * @param recipients Liste des adresses mail des destinataires (non null, non vide)
     * @param object Sujet du mail
     * @param message Message du mail
     * @throws IllegalArgumentException Si recipients est null ou vide
     * @throws MailException En cas de problème pour envoyer le mail
     */
    void sendMail(List<String> recipients, String object, String message) throws MailException;
    
    /**
     * Envoi un mail pour chaque distinataires dont les adresses sont fournies.
     * Il y a un mail d'envoyé par destinataire et non un seul mail avec tous
     * les destinataires en copie.
     * 
     * @param recipients Liste des adresses mail des destinataires (non null, non vide)
     * @param object Sujet du mail
     * @param message Message du mail
     * @throws IllegalArgumentException Si recipients est null ou vide
     * @throws MailException En cas de problème pour envoyer le mail pour 1 ou plusieurs destinataires
     */
    void sendSeparateMail(List<String> recipients, String object, String message) throws MailException;
}
